#include <stdio.h>
#include <stdlib.h>

/**
 * 
 * 利用分治算法获取数组中的最大值
 **/

int get_max(int* arr,int left,int right);


int main()
{
	int arr[4]={1,2,3,4};
	printf("%d\n",get_max(arr,0,4));
	return 0;
}

int get_max(int* arr,int left,int right)
{
	int max_left=0,max_right=0,middle=0;
	//判断数组是否存在
	if(arr==NULL)
	{
		return -1;
	}
	
	//判断数组中是否只有一个元素
	if(right-left==1)
	{
		return arr[left];
	} 
	
	//查过查找范围只有两个数，则直接比较即可
	if(right-left<=1)
	{
		return arr[right] > arr[left] ? arr[right] : arr[left];
	} 
	
	//划分成两个等量区域
	middle=(right-left)/2+left;
	//得到左侧区域最大值
	max_left=get_max(arr,left,middle);
	//得到右侧最大值
	max_right=get_max(arr,middle+1,right);
	//比较左右两侧最大值
	return max_left >= max_right ? max_left : max_right; 
} 
